home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 19 / CD_ASCQ_19_010295.iso / dos / prg / pas / swag / comm.swg / 0025_A Simple Int14 Unit.pas < prev    next >
Pascal/Delphi Source File  |  1993-08-27  |  2KB  |  54 lines

  1. {
  2. GINA DAVIS
  3.  
  4. I have used routines to read/write the comm ports and read Status using
  5. the Port instruction, but mostly I have used BIOS calls (Int $14).  What
  6. you need is a technical reference book spelling out the Registers and
  7. the use of each bit.  (I have a book called "DOS Programmers Reference")
  8. I have source code which accesses a modem on Com1 or Com2 to dial phone
  9. numbers as part of my name & address database / dialer prog (Shareware).
  10.  
  11. Here's an example of calling INT 14 to set up the serial port:-
  12. }
  13.  
  14. FUNCTION Init_Port(serialport, params : word) : word;
  15. BEGIN
  16.   regs.AX := params;
  17.   regs.DX := port;
  18.   regs.AH := 0;
  19.   intr($14, regs);
  20. END;
  21.  
  22. {
  23.  The "serialport" is 0 for Com1 or 1 for Com2.
  24.  "params" determines baud, parity, stop bits, etc.
  25.  $43 for 300, $A3 gives 2400, $83 gives 1200,8,N,1 (p468 DOS Prog Ref)
  26.  (baudbits SHL 5) OR OtherBits - 110,150,300,600,1200,2400,4800,9600
  27.  
  28.  The function returns the Status, ie. whether the operation was successful.
  29.  And an example of using "Port" to directly access the a port register to
  30.  toggle the DTR bit to hangup the modem:-
  31. }
  32.  
  33. PROCEDURE Hang_Up_Modem(serialport : word);
  34. VAR
  35.   portaddress : word;
  36.   dummychar   : char;
  37. BEGIN
  38.   IF serialport = 0 THEN
  39.     portaddress := $3FC
  40.   ELSE
  41.     portaddress := $2FC;
  42.  
  43.   port[portaddress] := port[portaddress] xor $01;
  44.   DELAY(10);
  45.   port[portaddress] := port[portaddress] xor $01;
  46.   DELAY(10);
  47.   port[portaddress] := port[portaddress] AND $FE;
  48.  
  49.   REPEAT
  50.     dummychar := read_modem(serialport)
  51.   UNTIL regs.AH <> 0;
  52. END;    { Hang_Up_Modem }
  53.  
  54.